// 配置 Babel 的配置文件。定义 Babel 编译器的行为和使用的插件。
// Babel 是一个 JavaScript 编译器，可以将最新版本的 JavaScript 代码转换为向后兼容的代码，以便在旧版的浏览器或环境中运行。

// babel.config.js 文件可以用来配置 Babel 的各种选项和插件，如转译器、插件、预设等。    常见的配置选项包括：
    /**
     *   presets：预设，用于配置 Babel 如何转换 ES6+ 语法。
     *   plugins：插件，用于配置 Babel 如何处理特定的代码块或语法结构，加强其功能。
     *   env：环境变量，用于配置在不同的环境（如开发、生产）下使用的不同的配置。
     */

module.exports = {

  // `env`：环境变量，用于配置在不同的环境（如开发、生产）下使用的不同的配置。
    // 'env': {
    //   'development': {
    //     'plugins': []
    //   }
    // }


  //`presets`：预设，配置定义 Babel 转换规则的集合。预设通常包含一组插件，用于支持特定的 JavaScript 版本特性。  
  // 注意：Preset 是逆序排列的（从后往前）。
    presets: [
        '@vue/cli-plugin-babel/preset',
      // 将最新的 JavaScript 语法转换为向后兼容的代码   指定参数
        // [
        //   "@babel/preset-env",             // 转换现代 JavaScript 代码，并根据目标浏览器版本自动添加 polyfills。
        //   {
        //     "target":{       // 根据目标浏览器的兼容性要求转换语法
        //       "browsers":[
        //         ">1%",
        //         "last 2 versions",
        //         "not ie<=8"
        //       ],
        //     },
        //     useBuiltIns: 'entry',          // 根据目标浏览器版本使用正确的 polyfills
        //     corejs: 3,                     // 指定要使用的 Core-js 版本。
        //     loose: true,                   // 指定要使用的 ECMAScript 版本 是否使用宽松的转换模式。
        //     modules: false                 // 是否将模块转换为 CommonJS 模块。
        //   }
        // ]
    ],


  //`plugins`：插件，用于配置 Babel 如何处理特定的代码块或语法结构。添加额外的功能或改变 Babel 的行为。下面的代码暂时是复制粘贴的，谨慎打开！！！！！！！！！！！！！
    plugins: [
      // // 将 async/await 转换为 generator 函数
      //    '@babel/plugin-proposal-async-generator-functions',
      // // 将类属性转换为函数
      //    '@babel/plugin-proposal-class-properties',
      // // 将对象属性的私有标识转换为公共标识
      //    '@babel/plugin-proposal-private-methods',
      // // 将装饰器转换为等效的函数调用
      //    [
      //      '@babel/plugin-proposal-decorators',
      //      { legacy: true }
      //    ],
      // // 将 JSX 语法转换为 React.createElement() 调用
      //    '@babel/plugin-transform-react-jsx',
      // // 将动态 import() 转换为兼容的语法
      //    '@babel/plugin-syntax-dynamic-import',
      // // 优化 React 组件的渲染性能
      //    'react-refresh/babel',
      // // 移除 React 不需要的纯展示组件的 props 类型检查
      //    'react-remove-prop-types',
      // // 生成内联源映射。
      //    sourceMaps: 'inline',
    ],


  // 控制源映射的生成方式，可以是 true、false、inline 或 both。
    // sourceMaps:
  // 定义特定环境的配置。
    // envName:
  // 忽略某些文件或目录。
    // ignore:
  // 仅处理某些文件或目录。
    // only:
  // 排除某些文件或目录。
    // exclude:
  // 包含某些文件或目录。
    // include:
  // 支持的文件扩展名。
    // extensions:
  // 是否保留源代码中的注释。
    // comments:
  // 是否启用缓存。
    // cache:
  // 是否启用缓存。
    // cacheDirectory:

    // sourceType: "script",

    // assumptions: {
    //   setClassFields: true,
    //   iterableIsArray: false
    // },

    // overrides: [{}]
  }
